Skip to content

fix: double counting for the usage in stream mode for anthropic models - #2239

Merged
yuzisun merged 31 commits into
envoyproxy:mainfrom
hustxiayang:fix-usage-report
Jun 18, 2026
Merged

fix: double counting for the usage in stream mode for anthropic models#2239
yuzisun merged 31 commits into
envoyproxy:mainfrom
hustxiayang:fix-usage-report

Conversation

@hustxiayang

@hustxiayang hustxiayang commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Description

ExtractTokenUsageFromExplicitCaching  is called in both start message and the delta message, as a result. The usage report is not correct.

Fix: remove the accumulation in the message delta; also the previous tests can pass because the test cases did not mock the real cases, update all related tests cases as well.

@hustxiayang
hustxiayang requested a review from a team as a code owner June 16, 2026 16:14
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Jun 16, 2026
@hustxiayang hustxiayang changed the title update the usage-report fix: fix the twice counting for the usage in stream mode for anthropic models Jun 16, 2026
@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels Jun 16, 2026
hustxiayang and others added 23 commits June 16, 2026 12:20
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

Update the compatibility matrix to specify EG v1.8.1+.

Signed-off-by: Aaron Choo <achoo30@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ners (envoyproxy#2194)

**Description**

Azure is strict about `scheme` header to be same as the TLS transport on
which the request is being made. If the listener is an http listener,
envoy forwards a request with `scheme: http` instead of `https`. This
leads to requests getting dropped.
The simple solution is to use `matchUpstream` which is what is being
done in MCP backend listeners but missed in regular AI gateway route
listeners.

**Related Issues/PRs (if applicable)**
Fixes envoyproxy#2095

Signed-off-by: Anurag Aggarwal <kanurag94@gmail.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ackend HTTPRoute (envoyproxy#2134)

**Description**

When an `MCPRoute` has a `backendRef` with `securityPolicy.apiKey`
configured (either via `secretRef` or `inline`), the controller resolves
the secret and embeds the **plaintext API key** directly into the
generated `HTTPRoute` resource. This happens in two places:

1. **Header injection** — the key is written as a literal value in an
`HTTPRouteFilter` of type `RequestHeaderModifier` (e.g., `Authorization:
Bearer <plaintext-token>`).
2. **Query parameter injection** — the key is appended to the URL path
in a `URLRewrite` filter (e.g., `/mcp?api_key=<plaintext-token>`).

fixes envoyproxy#2141

**Possible Solutions**
1. This can be solved for Header injection by using
https://gateway.envoyproxy.io/docs/api/extension_types/#httpcredentialinjectionfilter.
However, APIKey for `QueryParams` will still continue to be stored in
plaintext. **Note: This PR implements this approach.**
2. By contrast, the existing `BackendSecurityPolicy` (used by
`AIGatewayRoute` / `AIServiceBackend`) stores the resolved credential
inside a Kubernetes **Secret** (the filter config secret consumed by
extproc), which benefits from RBAC, encryption at rest, and audit
logging. MCPRoute should adopt a similar approach.
3. Explore if we can add support for QueryParams in
CredentialInjectionFilter in Envoy Gateway.

**Affected code:**
- internal/controller/mcp_route.go`

**Testing**

**Created MCPRoute with credential injection into Authorization
header.**
Credential got created and HTTPRouteFilter with Credential Injection
filter got created. List tools and tool calls work as expected.
Credential and filter got deleted on removing backend and deleting
MCPRoute.

**Created MCPRoute with credential injection into a custom header.**
Credential got created and HTTPRouteFilter with Credential Injection
filter got created. List tools and tool calls work as expected.
Credential and filter got deleted on removing backend and deleting
MCPRoute.

**Created MCPRoute with inline API Key into Authorization header.**
No change in behaviour.

**Created MCPRoute with API Key injected into query param**
No change in behaviour.

---------

Signed-off-by: Aishwarya <aishwarya.raimule@nutanix.com>
Signed-off-by: aishwaryaraimule21 <aishwarya.raimule@nutanix.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2200)

Bumps the go group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
|
[github.com/anthropics/anthropic-sdk-go](https://github.com/anthropics/anthropic-sdk-go)
| `1.43.0` | `1.45.0` |
|
[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)
| `1.32.17` | `1.32.18` |
|
[github.com/modelcontextprotocol/go-sdk](https://github.com/modelcontextprotocol/go-sdk)
| `1.6.0` | `1.6.1` |
| [github.com/openai/openai-go/v3](https://github.com/openai/openai-go)
| `3.35.0` | `3.37.0` |
| [github.com/tetratelabs/func-e](https://github.com/tetratelabs/func-e)
| `1.5.0` | `1.6.0` |
|
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
| `0.279.0` | `0.280.0` |
| [google.golang.org/genai](https://github.com/googleapis/go-genai) |
`1.57.0` | `1.58.0` |

Updates `github.com/anthropics/anthropic-sdk-go` from 1.43.0 to 1.45.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-go/releases">github.com/anthropics/anthropic-sdk-go's
releases</a>.</em></p>
<blockquote>
<h2>v1.45.0</h2>
<h2>1.45.0 (2026-05-21)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.1...v1.45.0">v1.44.1...v1.45.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add support for thinking-token-count beta for
estimated tokens in thinking block deltas when streaming (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/dedeb6d263a651d63c95bd360befbd53dd26ec12">dedeb6d</a>)</li>
</ul>
<h2>v1.44.1</h2>
<h2>1.44.1 (2026-05-19)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.0...v1.44.1">v1.44.0...v1.44.1</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>runner:</strong> skip tool calls SessionToolRunner does not
own (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/93afc65f2f1b811d760f2e5149e13dd5eb328f79">93afc65</a>)</li>
</ul>
<h2>v1.44.0</h2>
<h2>1.44.0 (2026-05-19)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.44.0">v1.43.0...v1.44.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> Add support for self-hosted sandboxes in
CMA with sandbox helpers (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/34354c43f329852a88682bb6665a1453754d61be">34354c4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-go/blob/main/CHANGELOG.md">github.com/anthropics/anthropic-sdk-go's
changelog</a>.</em></p>
<blockquote>
<h2>1.45.0 (2026-05-21)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.1...v1.45.0">v1.44.1...v1.45.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add support for thinking-token-count beta for
estimated tokens in thinking block deltas when streaming (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/dedeb6d263a651d63c95bd360befbd53dd26ec12">dedeb6d</a>)</li>
</ul>
<h2>1.44.1 (2026-05-19)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.0...v1.44.1">v1.44.0...v1.44.1</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>runner:</strong> skip tool calls SessionToolRunner does not
own (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/93afc65f2f1b811d760f2e5149e13dd5eb328f79">93afc65</a>)</li>
</ul>
<h2>1.44.0 (2026-05-19)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.44.0">v1.43.0...v1.44.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> Add support for self-hosted sandboxes in
CMA with sandbox helpers (<a
href="https://github.com/anthropics/anthropic-sdk-go/commit/34354c43f329852a88682bb6665a1453754d61be">34354c4</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/anthropics/anthropic-sdk-go/commit/88310ccdb19419fb6c8b0fd2e99f1e3d8c74041e"><code>88310cc</code></a>
release: 1.45.0</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-go/commit/4eb28e321282db071753c97d3223b092db9108d1"><code>4eb28e3</code></a>
feat(api): Add support for thinking-token-count beta for estimated
tokens in ...</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-go/commit/d138190aeae5568972430f9a6204875aa04097fc"><code>d138190</code></a>
release: 1.44.1</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-go/commit/d0a73a50e70544b552f202d4e6f67eb45b9fd739"><code>d0a73a5</code></a>
fix(runner): skip tool calls SessionToolRunner does not own</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-go/commit/288857308b47e48ee7d572506efffb568d514846"><code>2888573</code></a>
release: 1.44.0 (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-go/issues/340">#340</a>)</li>
<li>See full diff in <a
href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.45.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.17 to 1.32.18
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/db9f4e546dfe2f62a6bc3bf54b9da42ebace6372"><code>db9f4e5</code></a>
Release 2026-05-22</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/34e7ddc9400e830a9ae226a7e3c2161e5ece4f19"><code>34e7ddc</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f9db036cf7b3b8a1ea5eb67c3d296da4b48b6e2b"><code>f9db036</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/ae5eae1e3ec46433bd99496bfa6936f8f09a2e72"><code>ae5eae1</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/429dbdd2a35d325aabc5757edfc9ebf09c2ad12e"><code>429dbdd</code></a>
Feat discover endpoint partition validation (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3410">#3410</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/ab4f5b60785064ec6346c922604d94b63d9c7299"><code>ab4f5b6</code></a>
Release 2026-05-21</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/757a09909a97a15e5a481d9839b83f15b8fdc4bc"><code>757a099</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/02c8323ee6c99be82dae3a3923616756cb164525"><code>02c8323</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f4ac954c5b3567f7918fbaa845bd05a8b211f54e"><code>f4ac954</code></a>
Bump smithy-go version and update imports for evenstream protocoltests
(<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3420">#3420</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/6d937001e020def8b587dccbe5d803933ce57bfd"><code>6d93700</code></a>
Add replace for credentials dependency added on go.mod (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3419">#3419</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.17...config/v1.32.18">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/modelcontextprotocol/go-sdk` from 1.6.0 to 1.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/modelcontextprotocol/go-sdk/releases">github.com/modelcontextprotocol/go-sdk's
releases</a>.</em></p>
<blockquote>
<h2>v1.6.1</h2>
<p>This release adds an MCPGODEBUG flag to opt out of the Content-Type
check on POST requests.</p>
<h2>Behavior Changes</h2>
<p>Prior to v1.6.0 (v1.4.0...v1.5.0), the Content-Type check on POST
requests was gated by the same <code>disablecrossoriginprotection</code>
MCPGODEBUG flag as the cross-origin protection. In v1.6.0, the
cross-origin protection was disabled by default (replaced by the opt-in
<code>enableoriginverification</code> flag), but the Content-Type check
was kept on unconditionally, leaving no way to disable it.
This release restores an escape hatch for both the Streamable HTTP and
SSE transports: setting
<code>MCPGODEBUG=disablecontenttypecheck=1</code> skips the
<code>Content-Type: application/json</code> validation on POST requests.
See <a
href="https://redirect.github.com/modelcontextprotocol/go-sdk/issues/957">#957</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>mcp: add MCPGPDEBUG for opt-in Content-Type check by <a
href="https://github.com/guglielmo-san"><code>@​guglielmo-san</code></a>
in <a
href="https://redirect.github.com/modelcontextprotocol/go-sdk/pull/972">modelcontextprotocol/go-sdk#972</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1">https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/modelcontextprotocol/go-sdk/commit/d454bbaf06a342aee5336df3370321d9cdec2478"><code>d454bba</code></a>
mcp: add MCPGPDEBUG for opt-in Content-Type check (<a
href="https://redirect.github.com/modelcontextprotocol/go-sdk/issues/972">#972</a>)</li>
<li>See full diff in <a
href="https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/openai/openai-go/v3` from 3.35.0 to 3.37.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-go/releases">github.com/openai/openai-go/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.37.0</h2>
<h2>3.37.0 (2026-05-21)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v3.36.0...v3.37.0">v3.36.0...v3.37.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> api update (<a
href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9">7f7416e</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1">d646562</a>)</li>
<li><strong>api:</strong> update OpenAPI spec or Stainless config (<a
href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495">b34b78a</a>)</li>
<li><strong>client:</strong> optimize json encoder for internal types
(<a
href="https://github.com/openai/openai-go/commit/93adc6e6247e8ce830152c3df0980a3154aa098a">93adc6e</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>go:</strong> format generated admin paths (<a
href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e">1dd8f5e</a>)</li>
<li><strong>go:</strong> format generated project permission paths (<a
href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f">b751c37</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>api:</strong> docs updates (<a
href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0">08bc80e</a>)</li>
</ul>
<h2>v3.36.0</h2>
<h2>3.36.0 (2026-05-13)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v3.35.0...v3.36.0">v3.35.0...v3.36.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add service_tier parameter to response compact
method (<a
href="https://github.com/openai/openai-go/commit/bacd2c0bcf980e8d424d67446fb4d9c4ea897d24">bacd2c0</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>go:</strong> avoid panic when http.DefaultTransport is
wrapped (<a
href="https://github.com/openai/openai-go/commit/95a0250a9c770674f8deacb3a3fc1175e6808967">95a0250</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-go/blob/main/CHANGELOG.md">github.com/openai/openai-go/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.37.0 (2026-05-21)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v3.36.0...v3.37.0">v3.36.0...v3.37.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> api update (<a
href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9">7f7416e</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1">d646562</a>)</li>
<li><strong>api:</strong> update OpenAPI spec or Stainless config (<a
href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495">b34b78a</a>)</li>
<li><strong>client:</strong> optimize json encoder for internal types
(<a
href="https://github.com/openai/openai-go/commit/93adc6e6247e8ce830152c3df0980a3154aa098a">93adc6e</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>go:</strong> format generated admin paths (<a
href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e">1dd8f5e</a>)</li>
<li><strong>go:</strong> format generated project permission paths (<a
href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f">b751c37</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>api:</strong> docs updates (<a
href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0">08bc80e</a>)</li>
</ul>
<h2>3.36.0 (2026-05-13)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-go/compare/v3.35.0...v3.36.0">v3.35.0...v3.36.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add service_tier parameter to response compact
method (<a
href="https://github.com/openai/openai-go/commit/bacd2c0bcf980e8d424d67446fb4d9c4ea897d24">bacd2c0</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>go:</strong> avoid panic when http.DefaultTransport is
wrapped (<a
href="https://github.com/openai/openai-go/commit/95a0250a9c770674f8deacb3a3fc1175e6808967">95a0250</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/openai/openai-go/commit/8f01a93893a51fc300850dc311aa66c96467f47b"><code>8f01a93</code></a>
Merge pull request <a
href="https://redirect.github.com/openai/openai-go/issues/676">#676</a>
from openai/release-please--branches--main--changes--...</li>
<li><a
href="https://github.com/openai/openai-go/commit/2db0d86948259932a76fe8df25a3a513c132f242"><code>2db0d86</code></a>
release: 3.37.0</li>
<li><a
href="https://github.com/openai/openai-go/commit/ea245d8115372e980d442072c79436f991366348"><code>ea245d8</code></a>
Merge pull request <a
href="https://redirect.github.com/openai/openai-go/issues/991">#991</a>
from stainless-sdks/dev/xuanqi/public-api-docs-enterp...</li>
<li><a
href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e"><code>1dd8f5e</code></a>
fix(go): format generated admin paths</li>
<li><a
href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9"><code>7f7416e</code></a>
feat(api): api update</li>
<li><a
href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f"><code>b751c37</code></a>
fix(go): format generated project permission paths</li>
<li><a
href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0"><code>08bc80e</code></a>
chore(api): docs updates</li>
<li><a
href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1"><code>d646562</code></a>
feat(api): manual updates</li>
<li><a
href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495"><code>b34b78a</code></a>
feat(api): update OpenAPI spec or Stainless config</li>
<li><a
href="https://github.com/openai/openai-go/commit/efa3cc0d27ca02c86ecea59f34a7b731fdc1708f"><code>efa3cc0</code></a>
codegen metadata</li>
<li>Additional commits viewable in <a
href="https://github.com/openai/openai-go/compare/v3.35.0...v3.37.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/tetratelabs/func-e` from 1.5.0 to 1.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tetratelabs/func-e/releases">github.com/tetratelabs/func-e's
releases</a>.</em></p>
<blockquote>
<h2>v1.6.0</h2>
<p>func-e 1.6.0 gives you yesterday's envoy main build via the
&quot;dev&quot; version</p>
<p>Before, testing pre-release Envoy with func-e meant compiling it
yourself or using Docker, which only worked on Linux. Now you can
install and run dev builds on all platforms the same way you would any
tagged version.</p>
<pre lang="bash"><code>$ ENVOY_VERSION=dev func-e run --version
downloading
https://archive.tetratelabs.io/envoy/download/dev/envoy-dev-darwin-arm64.tar.xz
starting:
/Users/codefromthecrypt/.local/share/func-e/envoy-versions/dev/bin/envoy
with logs in
/Users/codefromthecrypt/.local/state/func-e/envoy-runs/20260518_170024_807

<p>/Users/codefromthecrypt/.local/share/func-e/envoy-versions/dev/bin/envoy
version:
abbadd905fa486ff1085cf3bbe4f3b73eb6dd8e0/1.39.0-dev/Clean/RELEASE/BoringSSL</p>
<p>$ func-e versions -a<br />
dev 2026-05-18 (a8d396eb)<br />
1.38.0 2026-04-23<br />
1.37.2 2026-04-10<br />
-- snip--<br />
</code></pre></p>
<p>This works because envoy's version manifest was recently updated with
a special &quot;dev&quot; key backed by a <a
href="https://redirect.github.com/tetratelabs/archive-envoy/pull/70">daily
pipeline job</a>, which archives linux from envoy's docker image, and
builds macos from the same SHA.</p>
<h2>Updating the &quot;dev&quot; build with the &quot;dev-latest&quot;
alias.</h2>
<p><code>dev</code> installs on demand like all other versions and stays
put once pulled. The alias <code>dev-latest</code> compares the remote
release date against the local install and re-downloads only when the
build has changed. <code>func-e use dev-latest</code> persists
&quot;dev&quot; in the version file, so it is a one-shot refresh, not a
stored preference.</p>
<h2>Why Use An Envoy &quot;dev&quot; Build?</h2>
<p>Envoy releases are worth the wait, but they land about once a
quarter. The dev build is for the gap between “merged” and “released”:
you can try current Envoy mainline without building Envoy yourself or
relying on a Linux-only Docker workflow.</p>
<p>For example, Envoy 1.39-dev already has new dynamic-module support
for request-aware upstream selection. A dynamic module can parse a
request, write <code>selected_backend</code> or
<code>selected_endpoint</code> into request state, and have the cluster
read it while choosing the upstream host. That removes the need to pass
routing decisions through synthetic headers or route re-selection.</p>
<p>Use dev when you need to test an unreleased feature, validate upgrade
impact early, or give feedback before the next Envoy release is cut. Use
tagged versions for normal production runs.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tetratelabs/func-e/commit/33bfb64ba4176a8d970a21f9a7516b73c9065266"><code>33bfb64</code></a>
Removes last of windows remnants (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/515">#515</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/3d2f9e8b33c4e279ff523f4f73d4abd6d8b2c5b3"><code>3d2f9e8</code></a>
Automates PR to update last known Envoy version (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/514">#514</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/d785fc8c942815230d3c9c9058a1c0de74a9bb91"><code>d785fc8</code></a>
Reverts to Tools.mk for go run instead of go tool (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/513">#513</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/99644b8672c6ed54fef2a5afe20b05472e27750f"><code>99644b8</code></a>
Removes nfpm env workaround (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/512">#512</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/1791ba3ad4bf9999a994230d8a1e7bcdc49143d7"><code>1791ba3</code></a>
Fix install.sh to follow curl-sh norms (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/511">#511</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/7f8616455617411cd217fbb78aeb3268814fd1ae"><code>7f86164</code></a>
Fix races and -race by default (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/510">#510</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/04fe1e25b51cdff3e025548a63626cde0c996415"><code>04fe1e2</code></a>
Use yesterday's envoy main build via the &quot;dev&quot; version (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/509">#509</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/a0c7a071675c5502a481b72bc9b32fea934c8311"><code>a0c7a07</code></a>
Backfills rationale for internal httptest package (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/508">#508</a>)</li>
<li><a
href="https://github.com/tetratelabs/func-e/commit/91e310e948417655a9c2548744b70f3285984555"><code>91e310e</code></a>
Installs go so that release e2e can run (<a
href="https://redirect.github.com/tetratelabs/func-e/issues/507">#507</a>)</li>
<li>See full diff in <a
href="https://github.com/tetratelabs/func-e/compare/v1.5.0...v1.6.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `google.golang.org/api` from 0.279.0 to 0.280.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.280.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">0.280.0</a>
(2026-05-19)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86">55ba2fa</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424">054d4b6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe">0382916</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3">13e1ad2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f">4c77865</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0">ae2f330</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4">f82d204</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">0.280.0</a>
(2026-05-19)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86">55ba2fa</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424">054d4b6</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe">0382916</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3">13e1ad2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f">4c77865</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0">ae2f330</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4">f82d204</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/3887b09ecbbaf25fba1bf52227ad5ca4f89e9968"><code>3887b09</code></a>
chore(main): release 0.280.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3592">#3592</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4"><code>f82d204</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/13e7314e1377c0dd4e132a681b3130abc5843dbd"><code>13e7314</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3597">#3597</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0"><code>ae2f330</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f"><code>4c77865</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3"><code>13e1ad2</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe"><code>0382916</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424"><code>054d4b6</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86"><code>55ba2fa</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>)</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `google.golang.org/genai` from 1.57.0 to 1.58.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/go-genai/releases">google.golang.org/genai's
releases</a>.</em></p>
<blockquote>
<h2>v1.58.0</h2>
<h2><a
href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">1.58.0</a>
(2026-05-21)</h2>
<h3>Features</h3>
<ul>
<li>add <code>enable_prompt_injection_detection</code> for Computer Use
feature for the Gemini API. (<a
href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab">19c2566</a>)</li>
<li>add new fields (<a
href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1">1608e80</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md">google.golang.org/genai's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">1.58.0</a>
(2026-05-21)</h2>
<h3>Features</h3>
<ul>
<li>add <code>enable_prompt_injection_detection</code> for Computer Use
feature for the Gemini API. (<a
href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab">19c2566</a>)</li>
<li>add new fields (<a
href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1">1608e80</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/go-genai/commit/97ea31f16473973e587f5b18659a5669dffd1f84"><code>97ea31f</code></a>
chore(main): release 1.58.0 (<a
href="https://redirect.github.com/googleapis/go-genai/issues/793">#793</a>)</li>
<li><a
href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab"><code>19c2566</code></a>
feat: add <code>enable_prompt_injection_detection</code> for Computer
Use feature for th...</li>
<li><a
href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1"><code>1608e80</code></a>
feat: add new fields</li>
<li><a
href="https://github.com/googleapis/go-genai/commit/843a665755f75055e7c4bde1177af703384f7905"><code>843a665</code></a>
chore: update comment in BatchJobOutputInfo to unblock javadoc
generation</li>
<li><a
href="https://github.com/googleapis/go-genai/commit/8b28bf81bd7a3cee47ed0a8b911e0d574f87a7aa"><code>8b28bf8</code></a>
chore: Throw fatals() instead of errors() in the replay_api_client when
the i...</li>
<li>See full diff in <a
href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `google.golang.org/genproto/googleapis/rpc` from
0.0.0-20260427160629-7cedc36a6bc4 to 0.0.0-20260511170946-3700d4141b60
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/googleapis/go-genproto/commits">compare
view</a></li>
</ul>
</details>
<br />

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

When an MCPRoute/AIGW ROute references a non-existent Gateway in its
spec.parentRefs, the controller still marks the route as "Accepted" with
the message "Gateway Route reconciled successfully". The controller logs
"Gateway not found" but does not propagate this as an error, so the
reconciliation appears successful.

Root Cause:

In internal/controller/mcp_route.go, the syncGateway function was a void
function that silently returned on errors — it logged "Gateway not
found" but never returned an error to the caller. Since syncGateways
(which calls syncGateway for each parentRef) always returned nil, the
syncMCPRoute function completed successfully, and Reconcile marked the
status as ConditionTypeAccepted.
- and same goes for ai gateway route controller

Fix:

Changed syncGateway to return an error. When the referenced Gateway is
not found, it now returns a descriptive error ("gateway
<namespace>/<name> not found"). This error propagates through
syncGateways → syncRoute → Reconcile, which then calls updateRouteStatus
with ConditionTypeNotAccepted and the error message.

During Route deletion (via the finalizer path), the error is still
logged but does not block cleanup — handleFinalizer already handles
onDeletionFn errors non-fatally.

---------

Signed-off-by: Hritik003 <hritik.raj@nutanix.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
… in Bedrock translator (envoyproxy#2189)

**Description**

In the Anthropic-to-AWS-Bedrock translator, Claude Code with
mid-conversation-system beta sends system prompts as {"role": "system"}
in the messages array. The SDK has no system role constant so these hit
the default error case. This promotes them to the top-level system param
before conversion.

Fixes envoyproxy#2206

Signed-off-by: Linus Schlumberger <linus.schlumberger@siemens.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ror translation (envoyproxy#2161)

**Description**

Anthropic→OpenAI error translation could fail with an internal 500 when
an OpenAI-compatible upstream returned a structured JSON error where
`error.code` was numeric (e.g. `400`) instead of string. This change
makes the error model tolerant to both representations so upstream 4xx
diagnostics can still be translated and surfaced to Anthropic clients.

- **Schema decoding hardening (`internal/apischema/openai/openai.go`)**
  - Added `UnmarshalJSON` for `openai.ErrorType`.
  - `error.code` now accepts:
    - JSON string (`"code":"400"`)
    - JSON number (`"code":400`)
    - `null` / omitted
- Numeric values are normalized to the existing internal `*string`
field.

- **Translator regression coverage
(`internal/translator/anthropic_openai_test.go`)**
- Extended `TestAnthropicToOpenAITranslator_ResponseError` with a JSON
error fixture containing numeric `code`.
- Confirms response still maps to Anthropic error envelope with expected
`type` and `message`.

```json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "Bad request",
    "param": null,
    "code": 400
  }
}
```

**Related Issues/PRs (if applicable)**

Fixes envoyproxy#2151

**Special notes for reviewers (if applicable)**

N/A

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

Fix the vars for the 0.7 and main releases.

**Related Issues/PRs (if applicable)**

N/A

**Special notes for reviewers (if applicable)**

N/A

Signed-off-by: Ignasi Barrera <nacx@apache.org>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…2199)

**Description**
Anthropic recently exposed the reasoning tokens via
`output_tokens_details`:
https://platform.claude.com/docs/en/api/python/messages/create. Thus we
should also added this usage information for our users.

---------

Signed-off-by: yxia216 <yxia216@bloomberg.net>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…voyproxy#2220)

Bumps the go group with 3 updates in the / directory:
[go.opentelemetry.io/contrib/exporters/autoexport](https://github.com/open-telemetry/opentelemetry-go-contrib),
[go.opentelemetry.io/contrib/propagators/autoprop](https://github.com/open-telemetry/opentelemetry-go-contrib)
and
[google.golang.org/api](https://github.com/googleapis/google-api-go-client).

Updates `go.opentelemetry.io/contrib/exporters/autoexport` from 0.68.0
to 0.69.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/exporters/autoexport's
releases</a>.</em></p>
<blockquote>
<h2>v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>otelconf: validate encoding configuration for OTLP HTTP exporters by
<a href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a>
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8772">open-telemetry/opentelemetry-go-contrib#8772</a></li>
<li>fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to
v1.99.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8780">open-telemetry/opentelemetry-go-contrib#8780</a></li>
<li>chore(deps): update prom/prometheus docker tag to v3.11.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8779">open-telemetry/opentelemetry-go-contrib#8779</a></li>
<li>otellogrus: Set error field as <code>record.SetErr</code> by <a
href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8778">open-telemetry/opentelemetry-go-contrib#8778</a></li>
<li>chore(deps): update module golang.org/x/sys to v0.43.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8783">open-telemetry/opentelemetry-go-contrib#8783</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to 93c7c8a by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8786">open-telemetry/opentelemetry-go-contrib#8786</a></li>
<li>chore(deps): update module github.com/mattn/go-isatty to v0.0.21 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8787">open-telemetry/opentelemetry-go-contrib#8787</a></li>
<li>chore(deps): update module github.com/mattn/go-runewidth to v0.0.23
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8788">open-telemetry/opentelemetry-go-contrib#8788</a></li>
<li>chore(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8791">open-telemetry/opentelemetry-go-contrib#8791</a></li>
<li>chore(deps): update actions/github-script action to v9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8795">open-telemetry/opentelemetry-go-contrib#8795</a></li>
<li>fix(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8794">open-telemetry/opentelemetry-go-contrib#8794</a></li>
<li>otelzap: set error field as record.SetErr by <a
href="https://github.com/iblancasa"><code>@​iblancasa</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8719">open-telemetry/opentelemetry-go-contrib#8719</a></li>
<li>fix(deps): update golang.org/x to 746e56f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8796">open-telemetry/opentelemetry-go-contrib#8796</a></li>
<li>chore(deps): update module golang.org/x/arch to v0.26.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8798">open-telemetry/opentelemetry-go-contrib#8798</a></li>
<li>Check if otelgrpc metrics are enabled by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8792">open-telemetry/opentelemetry-go-contrib#8792</a></li>
<li>chore(deps): update actions/upload-artifact action to v7.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8800">open-telemetry/opentelemetry-go-contrib#8800</a></li>
<li>Check instrument enabled in deprecatedruntime by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8793">open-telemetry/opentelemetry-go-contrib#8793</a></li>
<li>chore(deps): update module github.com/ashanbrown/forbidigo/v2 to
v2.3.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8804">open-telemetry/opentelemetry-go-contrib#8804</a></li>
<li>chore(deps): update module github.com/ashanbrown/makezero/v2 to
v2.2.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8802">open-telemetry/opentelemetry-go-contrib#8802</a></li>
<li>chore(deps): update module github.com/manuelarte/funcorder to v0.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8803">open-telemetry/opentelemetry-go-contrib#8803</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/exporters/autoexport's
changelog</a>.</em></p>
<blockquote>
<h2>[1.44.0/2.5.1/0.69.0/0.37.1/0.24.0/0.19.0/0.16.1/0.16.0] -
2026-05-28</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/03b2bcdb54b3dde73c9ff91ae216aec262f6c8f5"><code>03b2bcd</code></a>
Release v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9033">#9033</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/80c46d4037d5991ce324216a52cf7e8d7f2d81fa"><code>80c46d4</code></a>
chore(deps): update module github.com/alecthomas/chroma/v2 to v2.26.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9034">#9034</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/51f292197d33b84a21b3c70ae21cb185a2570d5e"><code>51f2921</code></a>
fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.41.2
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9026">#9026</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/db82162f1b642bb6dca7fa5be48045315bb466d6"><code>db82162</code></a>
fix(deps): update aws-sdk-go-v2 monorepo (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9031">#9031</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/5a3e533d8cd4045128e61a966f6dad58964a78ea"><code>5a3e533</code></a>
fix(deps): update module github.com/aws/smithy-go to v1.26.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9032">#9032</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c67843c753a924faef17bc4aa63c138aa9472477"><code>c67843c</code></a>
otelhttp: Remove custom wrapper after handling request (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c0a41352283151ab6655e88120e4ff4f0a917a2e"><code>c0a4135</code></a>
docs(otelhttptrace): add performance guidance for WithoutSubSpans (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8785">#8785</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a51a86790e1f4df231a70bb5fecc72b95d3c1bf0"><code>a51a867</code></a>
otelconf: implement cardinality_limits support in PeriodicMetricReader
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/dead6e50fc0b5b3dc4aea288df207953dae5afe7"><code>dead6e5</code></a>
chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8994">#8994</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/979ce1857524394d0884fd7c491722c5bcb43d50"><code>979ce18</code></a>
chore(deps): update module github.com/jgautheron/goconst to v1.10.2 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9030">#9030</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.68.0...zpages/v0.69.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/contrib/propagators/autoprop` from 0.68.0
to 0.69.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/propagators/autoprop's
releases</a>.</em></p>
<blockquote>
<h2>v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>otelconf: validate encoding configuration for OTLP HTTP exporters by
<a href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a>
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8772">open-telemetry/opentelemetry-go-contrib#8772</a></li>
<li>fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to
v1.99.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8780">open-telemetry/opentelemetry-go-contrib#8780</a></li>
<li>chore(deps): update prom/prometheus docker tag to v3.11.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8779">open-telemetry/opentelemetry-go-contrib#8779</a></li>
<li>otellogrus: Set error field as <code>record.SetErr</code> by <a
href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8778">open-telemetry/opentelemetry-go-contrib#8778</a></li>
<li>chore(deps): update module golang.org/x/sys to v0.43.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8783">open-telemetry/opentelemetry-go-contrib#8783</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to 93c7c8a by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8786">open-telemetry/opentelemetry-go-contrib#8786</a></li>
<li>chore(deps): update module github.com/mattn/go-isatty to v0.0.21 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8787">open-telemetry/opentelemetry-go-contrib#8787</a></li>
<li>chore(deps): update module github.com/mattn/go-runewidth to v0.0.23
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8788">open-telemetry/opentelemetry-go-contrib#8788</a></li>
<li>chore(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8791">open-telemetry/opentelemetry-go-contrib#8791</a></li>
<li>chore(deps): update actions/github-script action to v9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8795">open-telemetry/opentelemetry-go-contrib#8795</a></li>
<li>fix(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8794">open-telemetry/opentelemetry-go-contrib#8794</a></li>
<li>otelzap: set error field as record.SetErr by <a
href="https://github.com/iblancasa"><code>@​iblancasa</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8719">open-telemetry/opentelemetry-go-contrib#8719</a></li>
<li>fix(deps): update golang.org/x to 746e56f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8796">open-telemetry/opentelemetry-go-contrib#8796</a></li>
<li>chore(deps): update module golang.org/x/arch to v0.26.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8798">open-telemetry/opentelemetry-go-contrib#8798</a></li>
<li>Check if otelgrpc metrics are enabled by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8792">open-telemetry/opentelemetry-go-contrib#8792</a></li>
<li>chore(deps): update actions/upload-artifact action to v7.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8800">open-telemetry/opentelemetry-go-contrib#8800</a></li>
<li>Check instrument enabled in deprecatedruntime by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8793">open-telemetry/opentelemetry-go-contrib#8793</a></li>
<li>chore(deps): update module github.com/ashanbrown/forbidigo/v2 to
v2.3.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8804">open-telemetry/opentelemetry-go-contrib#8804</a></li>
<li>chore(deps): update module github.com/ashanbrown/makezero/v2 to
v2.2.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8802">open-telemetry/opentelemetry-go-contrib#8802</a></li>
<li>chore(deps): update module github.com/manuelarte/funcorder to v0.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8803">open-telemetry/opentelemetry-go-contrib#8803</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/propagators/autoprop's
changelog</a>.</em></p>
<blockquote>
<h2>[1.44.0/2.5.1/0.69.0/0.37.1/0.24.0/0.19.0/0.16.1/0.16.0] -
2026-05-28</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/03b2bcdb54b3dde73c9ff91ae216aec262f6c8f5"><code>03b2bcd</code></a>
Release v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9033">#9033</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/80c46d4037d5991ce324216a52cf7e8d7f2d81fa"><code>80c46d4</code></a>
chore(deps): update module github.com/alecthomas/chroma/v2 to v2.26.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9034">#9034</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/51f292197d33b84a21b3c70ae21cb185a2570d5e"><code>51f2921</code></a>
fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.41.2
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9026">#9026</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/db82162f1b642bb6dca7fa5be48045315bb466d6"><code>db82162</code></a>
fix(deps): update aws-sdk-go-v2 monorepo (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9031">#9031</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/5a3e533d8cd4045128e61a966f6dad58964a78ea"><code>5a3e533</code></a>
fix(deps): update module github.com/aws/smithy-go to v1.26.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9032">#9032</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c67843c753a924faef17bc4aa63c138aa9472477"><code>c67843c</code></a>
otelhttp: Remove custom wrapper after handling request (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c0a41352283151ab6655e88120e4ff4f0a917a2e"><code>c0a4135</code></a>
docs(otelhttptrace): add performance guidance for WithoutSubSpans (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8785">#8785</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a51a86790e1f4df231a70bb5fecc72b95d3c1bf0"><code>a51a867</code></a>
otelconf: implement cardinality_limits support in PeriodicMetricReader
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/dead6e50fc0b5b3dc4aea288df207953dae5afe7"><code>dead6e5</code></a>
chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8994">#8994</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/979ce1857524394d0884fd7c491722c5bcb43d50"><code>979ce18</code></a>
chore(deps): update module github.com/jgautheron/goconst to v1.10.2 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9030">#9030</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.68.0...zpages/v0.69.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel` from 1.43.0 to 1.44.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel's
changelog</a>.</em></p>
<blockquote>
<h2>[1.44.0/0.66.0/0.20.0/0.0.17] 2026-05-27</h2>
<h3>Added</h3>
<ul>
<li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions
for new <code>BYTESLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li>
<li>Apply attribute value limit to the <code>KindBytes</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Apply attribute value limit to the <code>BYTESLICE</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Add <code>String</code> method for <code>Value</code> type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li>
<li>Add <code>Slice</code> and <code>SliceValue</code> functions for new
<code>SLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> to
<code>attribute.SLICE</code> type attribute values in
<code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating
contained string values. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li>
<li>Add <code>Error</code> field on <code>Record</code> type in
<code>go.opentelemetry.io/otel/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>Settable</code> to
<code>go.opentelemetry.io/otel/metric/x</code> to allow reusing
attribute options. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li>
<li>Add experimental support for splitting metric data across multiple
batches in <code>go.opentelemetry.io/otel/sdk/metric</code>.
Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=&lt;max_size&gt;</code> to
enable for all periodic readers.
See <code>go.opentelemetry.io/otel/sdk/metric/internal/x</code> for
feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8071">#8071</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8194">#8194</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See <code>go.opentelemetry.io/otel/stdout/stdoutlog/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li>
<li>Add <code>WithDefaultAttributes</code> to
<code>go.opentelemetry.io/otel/metric/x</code> to support setting
default attributes on instruments. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8135">#8135</a>)</li>
<li>Add <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package.
The package contains semantic conventions from the <code>v1.41.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.41.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.40.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8324">#8324</a>)</li>
<li>Add Observable variants of instruments to
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8350">#8350</a>)</li>
<li>Generate explicit histogram bucket boundaries from weaver
configuration for HTTP and RPC duration instruments in
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8002">#8002</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong>
<code>go.opentelemetry.io/otel/sdk/metric</code> now applies a default
cardinality limit of 2000 to comply with the Metrics SDK specification
recommendation.
New attribute sets are dropped when the cardinality limit is reached.
The measurement of these sets are aggregated into a special attribute
set containing <code>attribute.Bool(&quot;otel.metric.overflow&quot;,
true)</code>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/b62d92831b2dd142f5a0cc89c828270274196877"><code>b62d928</code></a>
Release 1.44.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8376">#8376</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/94132a0a729e94c5aa6e9e1ce7640c0f802dcfea"><code>94132a0</code></a>
chore(deps): update golang.org/x/telemetry digest to 5997936 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8379">#8379</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/6fdcf82adfebc3becfb5d357957546d6d7258469"><code>6fdcf82</code></a>
feat: add self-observability metrics to otlpmetricgrpc metric exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/761bbfc2f4ae002f4a54f8c57c12b8a58135a741"><code>761bbfc</code></a>
fix(deps): update golang.org/x (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8377">#8377</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/3a91dc62d3852313bab40ff151bb3e11fae1745e"><code>3a91dc6</code></a>
fix(deps): update googleapis to 3dc84a4 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8375">#8375</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/f593185679130f56e14bed3c337fa7f8f60756b1"><code>f593185</code></a>
exporters/otlp: default max request size to 64 MiB (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8365">#8365</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/f02feacf8652b69c051851cfa2945d2ed5f0d568"><code>f02feac</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/36c2f1bfd1a6a789dc575f8886399093d7600586"><code>36c2f1b</code></a>
semconvkit: add invariant test for histogram-exclusion rule (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8370">#8370</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/d0b6cbdff5346557923fd05bd3f5f34df002aeee"><code>d0b6cbd</code></a>
sdk/metric: document unit-sensitivity of DefaultAggregationSelector (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8224">#8224</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-go/commit/9a68034bd45c6f24c481d9f9c87ebbee0a61482f"><code>9a68034</code></a>
add self observability for stdout exporter (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/v1.43.0...v1.44.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/exporters/prometheus` from 0.65.0 to
0.66.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel/exporters/prometheus's
releases</a>.</em></p>
<blockquote>
<h2>v1.44.0/v0.66.0/v0.20.0/v0.0.17</h2>
<h3>Added</h3>
<ul>
<li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions
for new <code>BYTESLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li>
<li>Apply attribute value limit to the <code>KindBytes</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Apply attribute value limit to the <code>BYTESLICE</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Add <code>String</code> method for <code>Value</code> type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li>
<li>Add <code>Slice</code> and <code>SliceValue</code> functions for new
<code>SLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> to
<code>attribute.SLICE</code> type attribute values in
<code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating
contained string values. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li>
<li>Add <code>Error</code> field on <code>Record</code> type in
<code>go.opentelemetry.io/otel/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>Settable</code> to
<code>go.opentelemetry.io/otel/metric/x</code> to allow reusing
attribute options. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li>
<li>Add experimental support for splitting metric data across multiple
batches in <code>go.opentelemetry.io/otel/sdk/metric</code>.
Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=&lt;max_size&gt;</code> to
enable for all periodic readers.
See <code>go.opentelemetry.io/otel/sdk/metric/internal/x</code> for
feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8071">#8071</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8194">#8194</a>)</li>
<li>Add experimental self-observability metrics in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>.
Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment
variable.
See <code>go.opentelemetry.io/otel/stdout/stdoutlog/internal/x</code>
for feature documentation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li>
<li>Add <code>WithDefaultAttributes</code> to
<code>go.opentelemetry.io/otel/metric/x</code> to support setting
default attributes on instruments. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8135">#8135</a>)</li>
<li>Add <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package.
The package contains semantic conventions from the <code>v1.41.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.41.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.40.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8324">#8324</a>)</li>
<li>Add Observable variants of instruments to
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8350">#8350</a>)</li>
<li>Generate explicit histogram bucket boundaries from weaver
configuration for HTTP and RPC duration instruments in
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8002">#8002</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong>
<code>go.opentelemetry.io/otel/sdk/metric</code> now applies a default
cardinality limit of 2000 to comply with the Metrics SDK specification
recommendation.
New attribute sets are dropped when the cardinality limit is reached.
The measurement of these sets are aggregated into a special attribute
set containing <code>attribute.Bool(&quot;otel.metric.overflow&quot;,
true)</code>.
This can break users who relied on the previous unlimited default.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/exporters/prometheus's
changelog</a>.</em></p>
<blockquote>
<h2>[1.44.0/0.66.0/0.20.0/0.0.17] 2026-05-27</h2>
<h3>Added</h3>
<ul>
<li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions
for new <code>BYTESLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li>
<li>Apply attribute value limit to the <code>KindBytes</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Apply attribute value limit to the <code>BYTESLICE</code> attribute
type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Support <code>BYTESLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li>
<li>Add <code>String</code> method for <code>Value</code> type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li>
<li>Add <code>Slice</code> and <code>SliceValue</code> functions for new
<code>SLICE</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Support <code>SLICE</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> to
<code>attribute.SLICE</code> type attribute values in
<code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating
contained string values. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li>
<li>Add <code>Error</code> field on <code>Record</code> type in
<code>go.opentelemetry.io/otel/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>WithMaxRequestSize</code> option in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li>
<li>Add <code>Settable</code> to
<code>go.opentelemetry.io/otel/metric/x</code> to allow reusing
attribute options. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li>
<li>Add experimental support for splitting metric data across multiple
batches in <code>go.opentelemetry.io/otel/sdk/metric</code>.
Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=&lt;max_size&gt;</code> to
enable for all periodic readers.
See <code>go.opentelemetry.io/otel/s…
… github-actions group (envoyproxy#2221)

Bumps the github-actions group with 1 update:
[docker/setup-qemu-action](https://github.com/docker/setup-qemu-action).

Updates `docker/setup-qemu-action` from 4.0.0 to 4.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/setup-qemu-action/releases">docker/setup-qemu-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.0</h2>
<ul>
<li>Add <code>reset</code> input to uninstall current emulators by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/21">docker/setup-qemu-action#21</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.77.0 to 0.91.0 in
<a
href="https://redirect.github.com/docker/setup-qemu-action/pull/250">docker/setup-qemu-action#250</a>
<a
href="https://redirect.github.com/docker/setup-qemu-action/pull/247">docker/setup-qemu-action#247</a></li>
<li>Bump brace-expansion from 1.1.12 to 1.1.15 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/265">docker/setup-qemu-action#265</a></li>
<li>Bump fast-xml-builder from 1.0.0 to 1.2.0 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/286">docker/setup-qemu-action#286</a></li>
<li>Bump fast-xml-parser from 5.4.2 to 5.8.0 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/255">docker/setup-qemu-action#255</a></li>
<li>Bump flatted from 3.3.3 to 3.4.2 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/257">docker/setup-qemu-action#257</a></li>
<li>Bump glob from 10.3.15 to 10.5.0 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/254">docker/setup-qemu-action#254</a></li>
<li>Bump handlebars from 4.7.8 to 4.7.9 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/262">docker/setup-qemu-action#262</a></li>
<li>Bump lodash from 4.17.23 to 4.18.1 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/273">docker/setup-qemu-action#273</a></li>
<li>Bump postcss from 8.5.6 to 8.5.10 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/285">docker/setup-qemu-action#285</a></li>
<li>Bump tar from 6.2.1 to 7.5.15 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/287">docker/setup-qemu-action#287</a></li>
<li>Bump tmp from 0.2.5 to 0.2.6 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/291">docker/setup-qemu-action#291</a></li>
<li>Bump undici from 6.23.0 to 6.26.0 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/251">docker/setup-qemu-action#251</a></li>
<li>Bump vite from 7.3.1 to 7.3.2 in <a
href="https://redirect.github.com/docker/setup-qemu-action/pull/271">docker/setup-qemu-action#271</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/setup-qemu-action/compare/v4.0.0...v4.1.0">https://github.com/docker/setup-qemu-action/compare/v4.0.0...v4.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/06116385d9baf250c9f4dcb4858b16962ea869c3"><code>0611638</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/setup-qemu-action/issues/21">#21</a>
from crazy-max/uninst</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/ce59c818a5ff16552ddf7407ee7cb00bea682925"><code>ce59c81</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/2ddad4401e17fa807e8a3c4bd289ccdd993f0868"><code>2ddad44</code></a>
uninstall current emulators</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/8c37cd6f3456e1f3f3026250eac496709e9e7e10"><code>8c37cd6</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/setup-qemu-action/issues/250">#250</a>
from docker/dependabot/npm_and_yarn/docker/actions-to...</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/d1a0ff34af591b8e290e46f3fa114ef5bb81cd1c"><code>d1a0ff3</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/0a8f3dc12541cc2c3b19c182a1a2c90a2c8b8d93"><code>0a8f3dc</code></a>
build(deps): bump <code>@​docker/actions-toolkit</code> from 0.79.0 to
0.91.0</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/9430f61a7691bd1bfdc4d6ba70e558659d36fa7a"><code>9430f61</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/setup-qemu-action/issues/291">#291</a>
from docker/dependabot/npm_and_yarn/tmp-0.2.6</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/978bd7796cb6698377e7af6726b726e5ced642d0"><code>978bd77</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/3479febc62cc0fbcb98c7c7fc0dac778c0d79d6a"><code>3479feb</code></a>
build(deps): bump tmp from 0.2.5 to 0.2.6</li>
<li><a
href="https://github.com/docker/setup-qemu-action/commit/b113c264143c28c2974bed61af25be32d32f4782"><code>b113c26</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/setup-qemu-action/issues/255">#255</a>
from docker/dependabot/npm_and_yarn/fast-xml-parser-5...</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/setup-qemu-action/compare/ce360397dd3f832beb865e1373c09c0e9f86d70a...06116385d9baf250c9f4dcb4858b16962ea869c3">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/setup-qemu-action&package-manager=github_actions&previous-version=4.0.0&new-version=4.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

Adds stacklok to adopters page

---------

Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…roxy#2225)

**Description**

The request body we send to GCP Vertex AI (the Gemini generateContent
API) had a few field names in the wrong style. Vertex expects camelCase
names like `generationConfig` and `systemInstruction`, but three of them
were written in snake_case (`generation_config`, `system_instruction`,
`tool_config`). The `safetySettings` field was already camelCase, so the
struct was inconsistent with itself.

This updates those three names to camelCase so they all match the format
Vertex documents and the format the `google.golang.org/genai` library
uses. Vertex does accept the snake_case versions as well, so this isn't
fixing broken behaviour, but it removes the inconsistency and means
we're no longer relying on that leniency.

I also updated the tests that were asserting the old snake_case output.
While I was in there, I replaced some hardcoded content-length values in
the unit test with a check that the content-length header matches the
actual body length. Those fixed numbers would have needed recalculating
every time the body changed by even a byte, and the new check stays
correct on its own.

Testing: the existing unit tests and the data plane tests pass,
including the GCP Vertex AI cases that exercise the request body end to
end.

Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…m chart (envoyproxy#2226)

**Description**

The controller and inference-pool `ClusterRole`/`ClusterRoleBinding`
names are built with `printf "%s:%s" <base> .Release.Namespace` to keep
them unique per-release (introduced in envoyproxy#1511). When `.Release.Namespace`
is empty, this renders `name: <base>:` — an unquoted trailing colon that
strict YAML parsers reject with `mapping values are not allowed in this
context`. The whole render fails and zero resources are produced.

This doesn't trigger via `helm install` or `helm template` (the CLI
always defaults the namespace), only where a renderer leaves it unset —
e.g. the Helm SDK's `engine.Render` without `ReleaseOptions`, or
Replicated's image-extraction render.

The fix adds two independent layers of defense across the three affected
helpers (`_helpers.tpl`) and their six call sites
(`serviceaccount.yaml`,
`envoy_gateway_cluster_role_for_inference_pool.yaml`):

- Wrap the namespace in `default "default"` so the `printf` argument is
never empty. No behavior change for real installs, where the namespace
is always populated.
- Quote the rendered `name` fields so a trailing colon is always
unambiguous.

Either layer fixes the failure on its own; both are included for
robustness.

**Special notes for reviewers (if applicable)**

Verified with `helm lint` and `helm template` (default and explicit
namespaces) — names render correctly as `<base>:<namespace>` with no
change to existing behavior.

Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2191)

**Description**

In the OpenAI-to-AWS-Bedrock message converter, Bedrock Converse rejects
assistant messages with empty content arrays. Some clients send empty
assistant messages. This skips them when they have no content blocks.
Tool-call-only messages are preserved.

Fixes envoyproxy#2208

Signed-off-by: Linus Schlumberger <linus.schlumberger@siemens.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2170)

**Description**

**Scope:** this PR fixes the narrow case where the upstream cluster
ext_proc
filter issued `CONTINUE_AND_REPLACE` even though *nothing in the request
pipeline needed to mutate the body* — no translation, no model override,
no
retry, no backend `HTTPBodyMutation`. In that path, the upstream filter
replayed `u.parent.originalRequestBodyRaw` (snapshotted at the router
phase),
which clobbered any body mutation applied by an earlier ext_proc filter
in the
listener chain. After this PR, that path emits `CONTINUE` and leaves the
body
alone.

The broader question of "preserve an intermediate filter's body mutation
across translation / retries / `HTTPBodyMutation`" is **not** addressed
by
this PR. When `wantBodyReplace == true`, the replacement body is still
derived
from the router-phase snapshot, so any intermediate filter's mutation is
lost
on those branches. That's an architectural property of the
snapshot-at-router-
phase design — the upstream filter has no view of Envoy's current body,
by
design, to avoid re-buffering through ext_proc at the upstream phase.
Fixing
it requires a separate design (either re-buffering at upstream, or
propagating a diff via dynamic metadata) and should be its own PR.

**Root cause of the narrow bug.** The existing safety net in
`applyBodyMutation` looks like it covers the no-config case:

    if bodyMutator == nil {
        return bodyMutation
    }

but it does not fire in practice. `bodymutator.NewBodyMutator(nil, ...)`
returns a non-nil struct even when its `*filterapi.HTTPBodyMutation`
argument
is nil. So the early-return is dead code; the function falls through,
calls
`Mutate(originalRequestBodyRaw)` on a no-config mutator (which returns
its
input unchanged), wraps that in a `BodyMutation`, and the upstream
filter
sends `CONTINUE_AND_REPLACE` with the original body — even though
nothing
asked for a body replacement.

**Fix:**

* Add `BodyMutator.HasMutations()` predicate. `NewBodyMutator`'s
contract is
unchanged (it still returns non-nil); callers can ask whether the
mutator
  actually has anything to do.
* In `upstreamProcessor.ProcessRequestHeaders`, compute

mutatorHasMutations := u.bodyMutator != nil &&
u.bodyMutator.HasMutations()
wantBodyReplace := bodyMutation != nil || forceBodyMutation ||
mutatorHasMutations

before calling `applyBodyMutation`. When false, skip the body-mutation
work
and emit `CONTINUE` instead of `CONTINUE_AND_REPLACE`, preserving
translator
header mutations (e.g. path rewrite), header-mutator output, and
auth-handler
header additions. Skip the content-length dynamic-metadata restamp on
the
  `CONTINUE` branch since the body length did not change.

All existing `CONTINUE_AND_REPLACE` callers stay on the existing path
(these
are the branches where this PR explicitly does not change behavior,
including
the loss-of-earlier-mutation property documented above):

* Translator emits a body (AWS Bedrock/SigV4, OpenAI to Anthropic,
OpenAI to
  Vertex, etc.) — `bodyMutation != nil`.
* Backend `HTTPBodyMutation` configured — `HasMutations() == true`.
* Retry — `forceBodyMutation == true` via `u.onRetry()`.
* Streaming with `IncludeUsage=false` — `forceBodyMutation == true`.
* Model override — translator emits `newBody` via
`sjson.SetBytesOptions`, so
  `bodyMutation != nil`.

**Tests:**

* Added
`Test_chatCompletionProcessorUpstreamFilter_ProcessRequestHeaders_BodyReplaceContract`
  with two subtests:
  * `no translator body, no mutator, no force -> CONTINUE` exercises the
previously untested path. Asserts `Status == CONTINUE`, no
`BodyMutation`,
    preserved translator and auth-handler header mutations, and
    `DynamicMetadata == nil` (no content-length restamp).
  * `translator body present -> CONTINUE_AND_REPLACE` pins the existing
    behavior so a future refactor cannot quietly flip the contract back.

The coverage gap that let this ship: every existing `t.Run("ok", ...)`
subtest
under `Test_chatCompletionProcessorUpstreamFilter_ProcessRequestHeaders`
set
`retBodyMutation` on the mock translator, so the "translator returns nil
body"
path was never exercised.

**Related Issues/PRs (if applicable)**

None.

**Special notes for reviewers (if applicable)**

* The fix is request-side only. Response-side code is untouched.
* `NewBodyMutator`'s contract is intentionally not changed (it still
returns
non-nil even when given a nil `*filterapi.HTTPBodyMutation`). A
predicate is
added instead, to keep the blast radius local to
`ProcessRequestHeaders`. If
reviewers prefer changing the constructor to return nil in the no-config
  case, that is a larger refactor and a separate PR.
* The bug is in the generic `upstreamProcessor[...]`, so the fix applies
to
every endpoint spec (chat completions, messages, embeddings,
completions,
GCP, AWS Bedrock, etc.). The new tests exercise one endpoint spec for
the
same reason the existing `ProcessRequestHeaders` table-test does —
locking
  the generic method's contract.

Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

**Problem**

If a buffer filter (`envoy.filters.http.buffer`) is added to the chain,
for example via an EnvoyPatchPolicy to raise the request buffer limit,
the AI Gateway extproc could be placed ahead of it. The AI Gateway
extproc runs with `RequestBodyMode: BUFFERED`, so when it runs before
the buffer filter it buffers the body against Envoy Gateway's default 32
KiB downstream per-connection limit and returns `413 Payload Too Large`
for larger bodies before the buffer filter's higher limit applies.

The buffer filter raises the stream's buffer limit to
`max_request_bytes`, but only for filters that decode after it. This was
hit in practice with large request bodies such as Gemini CLI tool
definitions.

**Solution**

When a buffer filter sits at or after the computed ext_proc insertion
point, insert the AI Gateway extproc immediately after the last buffer
filter. Envoy Gateway already orders the buffer filter before ext_proc,
so this honors that order. Behavior is unchanged when no buffer filter
is present.

This works because EnvoyPatchPolicy patches are applied before the
extension hook runs and Envoy Gateway does not re-sort filters
afterward, so the buffer filter is visible to this code.

The extension server only moves its own filter, not the user's buffer
filter, so this fixes the 413 for AI Gateway's extproc specifically and
not for other co-resident BUFFERED ext_procs.

**Testing**

Added table tests for three cases: ext_proc before buffer (inserted
after buffer), buffer before ext_proc (inserted after buffer), and no
buffer filter (unchanged).

Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
Co-authored-by: Ignasi Barrera <ignasi@tetrate.io>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

This updates the homepage info

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: Ignasi Barrera <nacx@apache.org>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**

Limit by default the size of MCP request payloads.

**Related Issues/PRs (if applicable)**

N/A

**Special notes for reviewers (if applicable)**

N/A

Signed-off-by: Ignasi Barrera <nacx@apache.org>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
@dosubot dosubot Bot removed the size:S This PR changes 10-29 lines, ignoring generated files. label Jun 16, 2026
@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Jun 16, 2026
@codecov-commenter

codecov-commenter commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.70%. Comparing base (2cc2417) to head (d0d9441).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2239      +/-   ##
==========================================
- Coverage   84.74%   84.70%   -0.05%     
==========================================
  Files         144      144              
  Lines       21210    21204       -6     
==========================================
- Hits        17975    17960      -15     
- Misses       2153     2162       +9     
  Partials     1082     1082              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@hustxiayang

Copy link
Copy Markdown
Contributor Author

/retest

@hustxiayang hustxiayang changed the title fix: fix the twice counting for the usage in stream mode for anthropic models fix: fix the double counting for the usage in stream mode for anthropic models Jun 16, 2026
Comment thread internal/translator/anthropic_helper.go Outdated
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
@hustxiayang

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

@hustxiayang

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the Anthropic stream parser to avoid modifying cache token details during message_delta events, as these are already set in message_start. It also adds comprehensive unit tests for streaming token usage and updates mock SSE responses in integration tests. The review feedback points out that the added comment in anthropic_helper.go is inaccurate: message_delta contains total accumulated output tokens rather than incremental ones, and ignoring cache tokens there is necessary to prevent double-counting when upstreams include full usage details in delta events. A suggestion was provided to clarify this in the code comment.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread internal/translator/anthropic_helper.go Outdated
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: hustxiayang <yangxiast@gmail.com>
@hustxiayang

Copy link
Copy Markdown
Contributor Author

@yuzisun Do you mind to review this? I have update the tests

if output, ok := usage.OutputTokens(); ok {
p.tokenUsage.AddOutputTokens(output)
}
// Update input tokens to include any cache tokens from delta

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed this PR when I was working on #2241.

After discussing offline with @hustxiayang and @yuzisun, we agreed to remove the extra cache token counting from message_start and instead rely on message_delta, which is the provider's final source of truth in streaming mode.

This keeps the logic cleaner and avoids edge cases like the one here: https://github.com/envoyproxy/ai-gateway/pull/2241/changes#diff-aa8ea9f59fc3acd18cfd4a4c571d683817274a213b6a5fad0ab6085cfe0912dfL974-L980.

@hustxiayang

Copy link
Copy Markdown
Contributor Author

@yuzisun About whether to set input tokens in the start message or the delta message, the anthropic's definition is like

class MessageDeltaUsage(BaseModel):
    cache_creation_input_tokens: Optional[int] = None  # cumulative
    cache_read_input_tokens: Optional[int] = None      # cumulative
    input_tokens: Optional[int] = None                 # cumulative
    output_tokens: int                                 # required, cumulative

and the start message's definition:

class Usage(BaseModel):
    cache_creation_input_tokens: Optional[int] = None
    cache_read_input_tokens: Optional[int] = None
    input_tokens: int        # required
    output_tokens: int       # required

The difference is that input_tokens are required in the start message, but optional in the delta message. Thus it should be safer to use start message as it's guanranted to be set, so it should be safer to get the value from the start message.

@hustxiayang

Copy link
Copy Markdown
Contributor Author

there is no difference when there is a disconnection or 529 error in the middle of the stream, because it's just to set the value into an intermediate structure (p). It only reports the usage (usage chunk and metrics) until endOfStream=true, which is after both start message and delta message. So there should be no difference.

@yuzisun

yuzisun commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

@yuzisun About whether to set input tokens in the start message or the delta message, the anthropic's definition is like

class MessageDeltaUsage(BaseModel):
    cache_creation_input_tokens: Optional[int] = None  # cumulative
    cache_read_input_tokens: Optional[int] = None      # cumulative
    input_tokens: Optional[int] = None                 # cumulative
    output_tokens: int                                 # required, cumulative

and the start message's definition:

class Usage(BaseModel):
    cache_creation_input_tokens: Optional[int] = None
    cache_read_input_tokens: Optional[int] = None
    input_tokens: int        # required
    output_tokens: int       # required

The difference is that input_tokens are required in the start message, but optional in the delta message. Thus it should be safer to use start message as it's guanranted to be set, so it should be safer to get the value from the start message.

Then we should get all inputs including cache read/write tokens in the start message since they are set before token streaming.

@hustxiayang

Copy link
Copy Markdown
Contributor Author

Then we should get all inputs including cache read/write tokens in the start message since they are set before token streaming.

@yuzisun I think the current implementation is set like this. You could check line 971-979, these values are set in the start message.

Comment thread internal/translator/anthropic_helper.go Outdated
// Accumulate cache creation tokens
p.tokenUsage.AddCacheCreationInputTokens(cacheCreation)
}
// Cache token details are already set in message_start — don't touch them here

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you move the comment above, looks odd for comments without code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I updated the comment.

Signed-off-by: yxia216 <yxia216@bloomberg.net>
@yuzisun yuzisun changed the title fix: fix the double counting for the usage in stream mode for anthropic models fix: fdouble counting for the usage in stream mode for anthropic models Jun 17, 2026
@yuzisun yuzisun changed the title fix: fdouble counting for the usage in stream mode for anthropic models fix: double counting for the usage in stream mode for anthropic models Jun 17, 2026
@hustxiayang

Copy link
Copy Markdown
Contributor Author

@yuzisun could you please help to merge it as well. Thanks!

@yuzisun
yuzisun merged commit 4ae1ec4 into envoyproxy:main Jun 18, 2026
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.